home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / Clueless.swf / scripts / org / flintparticles / zones / MultiZone.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  2.3 KB  |  97 lines

  1. package org.flintparticles.zones
  2. {
  3.    import flash.geom.Point;
  4.    
  5.    public class MultiZone implements Zone
  6.    {
  7.        
  8.       
  9.       private var _areas:Array;
  10.       
  11.       private var _zones:Array;
  12.       
  13.       private var _totalArea:Number;
  14.       
  15.       public function MultiZone()
  16.       {
  17.          super();
  18.          _zones = new Array();
  19.          _areas = new Array();
  20.          _totalArea = 0;
  21.       }
  22.       
  23.       public function getArea() : Number
  24.       {
  25.          return _totalArea;
  26.       }
  27.       
  28.       public function getLocation() : Point
  29.       {
  30.          var _loc1_:Number = NaN;
  31.          var _loc2_:int = 0;
  32.          var _loc3_:int = 0;
  33.          _loc1_ = Math.random() * _totalArea;
  34.          _loc2_ = int(_zones.length);
  35.          _loc3_ = 0;
  36.          while(_loc3_ < _loc2_)
  37.          {
  38.             if((_loc1_ = _loc1_ - _areas[_loc3_]) <= 0)
  39.             {
  40.                return _zones[_loc3_].getLocation();
  41.             }
  42.             _loc3_++;
  43.          }
  44.          if(_zones.length == 0)
  45.          {
  46.             throw new Error("Attempt to use a MultiZone object that contains no Zones");
  47.          }
  48.          return _zones[0].getLocation();
  49.       }
  50.       
  51.       public function addZone(param1:Zone) : void
  52.       {
  53.          var _loc2_:Number = NaN;
  54.          _zones.push(param1);
  55.          _loc2_ = param1.getArea();
  56.          _areas.push(_loc2_);
  57.          _totalArea += _loc2_;
  58.       }
  59.       
  60.       public function removeZone(param1:Zone) : void
  61.       {
  62.          var _loc2_:int = 0;
  63.          var _loc3_:int = 0;
  64.          _loc2_ = int(_zones.length);
  65.          _loc3_ = 0;
  66.          while(_loc3_ < _loc2_)
  67.          {
  68.             if(_zones[_loc3_] == param1)
  69.             {
  70.                _totalArea -= _areas[_loc3_];
  71.                _areas.splice(_loc3_,1);
  72.                _zones.splice(_loc3_,1);
  73.                return;
  74.             }
  75.             _loc3_++;
  76.          }
  77.       }
  78.       
  79.       public function contains(param1:Number, param2:Number) : Boolean
  80.       {
  81.          var _loc3_:int = 0;
  82.          var _loc4_:int = 0;
  83.          _loc3_ = int(_zones.length);
  84.          _loc4_ = 0;
  85.          while(_loc4_ < _loc3_)
  86.          {
  87.             if(_zones[_loc4_].contains(param1,param2))
  88.             {
  89.                return true;
  90.             }
  91.             _loc4_++;
  92.          }
  93.          return false;
  94.       }
  95.    }
  96. }
  97.